@echo off
setlocal enabledelayedexpansion

REM Vhall Stream Saver Windows 安装脚本

echo ========================================
echo     Vhall Stream Saver 安装程序
echo ========================================
echo.

REM 检查管理员权限
net session >nul 2>&1
if %errorLevel% neq 0 (
    echo [错误] 请以管理员身份运行此脚本
    pause
    exit /b 1
)

REM 检查 Node.js
echo [信息] 检查 Node.js...
node --version >nul 2>&1
if %errorLevel% neq 0 (
    echo [错误] Node.js 未安装，请先安装 Node.js
    echo 下载地址: https://nodejs.org/
    pause
    exit /b 1
)

for /f "tokens=*" %%i in ('node --version') do set NODE_VERSION=%%i
echo [成功] Node.js 版本: %NODE_VERSION%

REM 检查 npm
echo [信息] 检查 npm...
npm --version >nul 2>&1
if %errorLevel% neq 0 (
    echo [错误] npm 未安装
    pause
    exit /b 1
)

for /f "tokens=*" %%i in ('npm --version') do set NPM_VERSION=%%i
echo [成功] npm 版本: %NPM_VERSION%

REM 检查 Python
echo [信息] 检查 Python...
python --version >nul 2>&1
if %errorLevel% neq 0 (
    echo [警告] Python 未安装，将尝试使用 Node.js 安装 yt-dlp
) else (
    for /f "tokens=*" %%i in ('python --version') do set PYTHON_VERSION=%%i
    echo [成功] Python 版本: !PYTHON_VERSION!
)

REM 安装 yt-dlp
echo [信息] 检查 yt-dlp...
yt-dlp --version >nul 2>&1
if %errorLevel% equ 0 (
    for /f "tokens=*" %%i in ('yt-dlp --version') do set YTDLP_VERSION=%%i
    echo [成功] yt-dlp 已安装，版本: !YTDLP_VERSION!
) else (
    echo [信息] 安装 yt-dlp...
    
    REM 尝试使用 pip 安装
    pip install yt-dlp
    if %errorLevel% neq 0 (
        echo [错误] yt-dlp 安装失败
        echo 请手动安装 yt-dlp: pip install yt-dlp
        pause
        exit /b 1
    )
    
    for /f "tokens=*" %%i in ('yt-dlp --version') do set YTDLP_VERSION=%%i
    echo [成功] yt-dlp 安装成功，版本: !YTDLP_VERSION!
)

REM 设置 Native Messaging Host
echo [信息] 设置 Native Messaging Host...

set SCRIPT_DIR=%~dp0
set NATIVE_HOST_DIR=%SCRIPT_DIR%native-host
set HOST_SCRIPT=%NATIVE_HOST_DIR%\vhall-stream-saver-host.js
set MANIFEST_FILE=%NATIVE_HOST_DIR%\manifest.json

REM 确定 Native Messaging Host 注册目录
set NATIVE_MESSAGING_DIR=%LOCALAPPDATA%\Google\Chrome\User Data\NativeMessagingHosts

REM 创建目录
if not exist "%NATIVE_MESSAGING_DIR%" (
    mkdir "%NATIVE_MESSAGING_DIR%"
)

REM 更新 manifest.json 中的路径
set HOST_SCRIPT_ESCAPED=%HOST_SCRIPT:\=\\%
powershell -Command "(Get-Content '%MANIFEST_FILE%') -replace '\"path\": \"vhall-stream-saver-host.js\"', '\"path\": \"%HOST_SCRIPT_ESCAPED%\"' | Set-Content '%NATIVE_MESSAGING_DIR%\com.vhall.stream.saver.json'"

echo [成功] Native Messaging Host 配置完成
echo [信息] 配置文件位置: %NATIVE_MESSAGING_DIR%\com.vhall.stream.saver.json

REM 生成扩展包
echo [信息] 准备扩展文件...

set BUILD_DIR=%SCRIPT_DIR%build

REM 删除并创建构建目录
if exist "%BUILD_DIR%" (
    rmdir /s /q "%BUILD_DIR%"
)
mkdir "%BUILD_DIR%"

REM 复制扩展文件
copy "%SCRIPT_DIR%manifest.json" "%BUILD_DIR%\"
copy "%SCRIPT_DIR%background.js" "%BUILD_DIR%\"
copy "%SCRIPT_DIR%popup.html" "%BUILD_DIR%\"
copy "%SCRIPT_DIR%popup.css" "%BUILD_DIR%\"
copy "%SCRIPT_DIR%popup.js" "%BUILD_DIR%\"
copy "%SCRIPT_DIR%options.html" "%BUILD_DIR%\"
copy "%SCRIPT_DIR%options.css" "%BUILD_DIR%\"
copy "%SCRIPT_DIR%options.js" "%BUILD_DIR%\"
copy "%SCRIPT_DIR%hls-downloader.js" "%BUILD_DIR%\"
xcopy "%SCRIPT_DIR%icons" "%BUILD_DIR%\icons\" /E /I

echo [成功] 扩展文件已准备完成
echo [信息] 扩展目录: %BUILD_DIR%

REM 显示完成信息
echo.
echo [成功] 安装完成！
echo.
echo [信息] 接下来的步骤：
echo 1. 打开 Chrome 浏览器
echo 2. 访问 chrome://extensions/
echo 3. 开启「开发者模式」
echo 4. 点击「加载已解压的扩展程序」
echo 5. 选择目录: %BUILD_DIR%
echo 6. 扩展安装完成后，需要更新 Native Host manifest 中的扩展 ID
echo.
echo [警告] 重要提示：
echo - 安装扩展后，请复制扩展 ID
echo - 编辑文件: %NATIVE_MESSAGING_DIR%\com.vhall.stream.saver.json
echo - 将 EXTENSION_ID_PLACEHOLDER 替换为实际的扩展 ID
echo.
echo [信息] 使用说明：
echo - 访问微吼直播页面
echo - 点击扩展图标查看检测到的流
echo - 选择下载质量并开始下载
echo.

pause